package com.liu;

//package com.liu;
//
//import com.liu.staticProxyDemo_1_0_version.AaFactory;
//import com.liu.staticProxyDemo_1_0_version.ManToolsFactory;
//import com.liu.staticProxyDemo_1_0_version.Zhangsan;
//
///*
//    代理模式定义:
//        给目标对象提供一个代理对象，并由代理对象控制目标对象的引用，
//    目的:
//        1.通过引入代理对象的方式来间接访问目标对象,防止直接访问目标对象给系统带来的不必要复杂性；
//        2.通过代理对象对原有的业务增强；
//    三个要素：
//        统一接口，真实对象，代理对象
//        (代理对象和真实对象要实现同一个业务接口)
//        [代理对象中有真是对象的引用,然后真实对象通过代理对象的构造方法传递给代理对象]
//* */
public class Main{

    public static void main(String[] args) {
//        ManToolsFactory factory =new AaFactory();//真实对象，即被代理的对象
//        ManToolsFactory zhangsan =new Zhangsan(factory);  //代理人张三,代理产品factory
//       假设Main线程 为一个客户，客户需求为 卖一个 "D" size 的产品,
//        这时候代理人开始根据需求进行卖货
//        factory.saleManTools("D");
        //加入客户要大小为size为 A的 产品则执行
//        factory.saleManTools("A");


    }
}
